package cn.iocoder.yudao.module.tms.controller.admin.orderfollowlog.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;
import cn.iocoder.yudao.module.tms.enums.ClearanceStatusEnum;

@Schema(description = "管理后台 - 订单跟进日志 Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderFollowLogRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29274")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "关联的公司ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22380")
    @ExcelProperty("关联的公司ID")
    private Long companyId;

    @Schema(description = "关联的订单ID（关联tms_order表的id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "16167")
    @ExcelProperty("关联的订单ID（关联tms_order表的id）")
    private Long orderId;

    @Schema(description = "跟进时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("跟进时间")
    private LocalDateTime followTime;

    @Schema(description = "跟进人", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("跟进人")
    private String follower;

    @Schema(description = "跟进内容（沟通记录/进展描述等）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("跟进内容（沟通记录/进展描述等）")
    private String followContent;

    @Schema(description = "处理状态", example = "ISF_DECLARATION")
    @ExcelProperty("处理状态")
    private ClearanceStatusEnum processStatus;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;
    
    @Schema(description = "附件列表")
    private List<FollowLogAttachment> attachments;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class FollowLogAttachment {
        @Schema(description = "附件名称", requiredMode = Schema.RequiredMode.REQUIRED)
        private String attachmentName;

        @Schema(description = "附件URL", requiredMode = Schema.RequiredMode.REQUIRED)
        private String attachmentUrl;

        @Schema(description = "附件类型", requiredMode = Schema.RequiredMode.REQUIRED)
        private String attachmentType;
    }

}